package model

type Role = string

const (
	RoleUser  Role = "user"
	RoleAdmin Role = "admin"
)

type User struct {
	ID       uint   `gorm:"primaryKey"`
	Username string `gorm:"uniqueIndex;size:50"`
	Password string
	Role     Role // 用戶的角色，如 "admin", "user" 等
}

// Permission 自定义的权限表
type Permission struct {
	ID     uint   `gorm:"primaryKey;autoIncrement"`
	Ptype  string `gorm:"column:ptype;size:10;uniqueIndex:unique_index"` // 策略类型: "p" 或 "g"
	Role   string `gorm:"column:v0;size:100;uniqueIndex:unique_index"`   // 角色或用户
	Object string `gorm:"column:v1;size:100;uniqueIndex:unique_index"`   // 资源对象
	Action string `gorm:"column:v2;size:50;uniqueIndex:unique_index"`    // 操作行为
	Any    string `gorm:"column:v3;size:50;uniqueIndex:unique_index"`    // 操作行为
	Any1   string `gorm:"column:v4;size:50;uniqueIndex:unique_index"`    // 操作行为
	Any2   string `gorm:"column:v5;size:50;uniqueIndex:unique_index"`    // 操作行为
	// 如果是 g 类型策略, Role 是用户, Object 是角色, Action 不使用
}

func (receiver Permission) TableName() string {
	return "permission"
}
